package br.unifor.ads.pjappfinanceiro_dkp.ui;

import java.awt.Color;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;

import br.unifor.ads.pjappfinanceiro.business.ClienteBusiness;
import br.unifor.ads.pjappfinanceiro.entity.Clientes;
import br.unifor.ads.pjappfinanceiro.exceptions.BusinessException;
import br.unifor.ads.pjappfinanceiro_dkp.manager.ClienteManager;

public class FrmCadCliente extends JPanel {
	private JTextField edtNome;
	private JTextField edtEndereco;
	private JTextField edtCEP;
	private JTextField edtBairro;
	private JTextField edtEstado;
	private JTextField edtCidade;
	private JTextField edtEmail;
	private JTextField edtFone;
	private JTextField edtFax;
	private JTextField edtCPF;
	private JTextField edtRG;
	private JTextField edtBuscar;
	private ClienteManager clienteManager = new ClienteManager();
	private ClienteBusiness clienteBusiness = new ClienteBusiness();
	private JTextField edtId;

	/**
	 * Create the panel.
	 */
	public FrmCadCliente() {
		setLayout(null);

		JLabel lblNome = new JLabel("Nome:");
		lblNome.setBounds(22, 48, 95, 14);
		add(lblNome);

		edtNome = new JTextField();
		edtNome.setBounds(22, 66, 468, 20);
		add(edtNome);
		edtNome.setColumns(10);

		JLabel lblEndereo = new JLabel("Endereço:");
		lblEndereo.setBounds(22, 97, 107, 14);
		add(lblEndereo);

		edtEndereco = new JTextField();
		edtEndereco.setColumns(10);
		edtEndereco.setBounds(22, 115, 468, 20);
		add(edtEndereco);

		JLabel lblCep = new JLabel("CEP:");
		lblCep.setBounds(22, 147, 31, 14);
		add(lblCep);

		edtCEP = new JTextField();
		edtCEP.setColumns(10);
		edtCEP.setBounds(22, 164, 95, 20);
		add(edtCEP);

		JLabel lblBairro = new JLabel("Bairro:");
		lblBairro.setBounds(143, 146, 60, 14);
		add(lblBairro);

		edtBairro = new JTextField();
		edtBairro.setColumns(10);
		edtBairro.setBounds(143, 164, 218, 20);
		add(edtBairro);

		JLabel lblEstado = new JLabel("Estado:");
		lblEstado.setBounds(383, 146, 60, 14);
		add(lblEstado);

		edtEstado = new JTextField();
		edtEstado.setColumns(10);
		edtEstado.setBounds(383, 164, 107, 20);
		add(edtEstado);

		JLabel lblCidade = new JLabel("Cidade:");
		lblCidade.setBounds(22, 195, 60, 14);
		add(lblCidade);

		edtCidade = new JTextField();
		edtCidade.setColumns(10);
		edtCidade.setBounds(22, 213, 218, 20);
		add(edtCidade);

		JLabel lblEmail = new JLabel("Email:");
		lblEmail.setBounds(262, 195, 60, 14);
		add(lblEmail);

		edtEmail = new JTextField();
		edtEmail.setColumns(10);
		edtEmail.setBounds(262, 213, 228, 20);
		add(edtEmail);

		JLabel lblTelefone = new JLabel("Telefone:");
		lblTelefone.setBounds(22, 244, 95, 14);
		add(lblTelefone);

		edtFone = new JTextField();
		edtFone.setColumns(10);
		edtFone.setBounds(22, 260, 218, 20);
		add(edtFone);

		JLabel lblFax = new JLabel("Fax:");
		lblFax.setBounds(262, 244, 60, 14);
		add(lblFax);

		edtFax = new JTextField();
		edtFax.setColumns(10);
		edtFax.setBounds(262, 260, 228, 20);
		add(edtFax);

		JLabel lblCpf = new JLabel("CPF:");
		lblCpf.setBounds(22, 291, 60, 14);
		add(lblCpf);

		edtCPF = new JTextField();
		edtCPF.setColumns(10);
		edtCPF.setBounds(22, 308, 218, 20);
		add(edtCPF);

		JLabel lblRg = new JLabel("RG:");
		lblRg.setBounds(262, 291, 60, 14);
		add(lblRg);

		edtRG = new JTextField();
		edtRG.setColumns(10);
		edtRG.setBounds(262, 308, 228, 20);
		add(edtRG);

		JButton btnInserir = new JButton("Inserir");
		btnInserir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {

				Clientes cliente = new Clientes();
				cliente.setNome(edtNome.getText());
				cliente.setEndereco(edtEndereco.getText());
				cliente.setCep(edtCEP.getText());
				cliente.setBairro(edtBairro.getText());
				cliente.setCidade(edtCidade.getText());
				cliente.setEstado(edtEstado.getText());
				cliente.setFone(edtFone.getText());
				cliente.setFax(edtFax.getText());
				cliente.setEmail(edtEmail.getText());
				cliente.setCpf(edtCPF.getText());
				cliente.setRg(edtRG.getText());

				try {
					// usuarioBusiness.cadastrarUsuario(usuario);
					JOptionPane.showMessageDialog(null,
							clienteManager.inserirCliente(cliente));
				} catch (BusinessException e1) {

					e1.printStackTrace();
				}

			}
		});
		btnInserir.setBounds(22, 11, 89, 23);
		add(btnInserir);

		JButton btnAlterar = new JButton("Alterar");
		btnAlterar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				if (edtId.getText() != null) {
					Clientes cliente = new Clientes();
					cliente.setId(Integer.parseInt(edtId.getText()));
					cliente.setNome(edtNome.getText());
					cliente.setEndereco(edtEndereco.getText());
					cliente.setCep(edtCEP.getText());
					cliente.setBairro(edtBairro.getText());
					cliente.setCidade(edtCidade.getText());
					cliente.setEstado(edtEstado.getText());
					cliente.setFone(edtFone.getText());
					cliente.setFax(edtFax.getText());
					cliente.setEmail(edtEmail.getText());
					cliente.setCpf(edtCPF.getText());
					cliente.setRg(edtRG.getText());
					try {
						JOptionPane.showMessageDialog(null,
								clienteManager.updateCliente(cliente));
					} catch (HeadlessException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					} catch (BusinessException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}

			}
		});
		btnAlterar.setBounds(114, 11, 89, 23);
		add(btnAlterar);

		JButton btnExcluir = new JButton("Excluir");
		btnExcluir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				try {
					JOptionPane.showMessageDialog(null, clienteManager
							.deleteCliente(Integer.parseInt(edtId.getText())));
				} catch (HeadlessException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} catch (NumberFormatException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} catch (BusinessException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				limparTela();
			}
		});
		btnExcluir.setBounds(207, 11, 89, 23);
		add(btnExcluir);

		JButton btnSair = new JButton("Sair");
		btnSair.setBounds(296, 11, 89, 23);
		add(btnSair);

		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBorder(new LineBorder(new Color(0, 0, 0), 4));
		panel.setBounds(22, 346, 478, 102);
		add(panel);

		JLabel lblCpf_1 = new JLabel("CPF:");
		lblCpf_1.setBounds(52, 35, 59, 14);
		panel.add(lblCpf_1);

		edtBuscar = new JTextField();
		edtBuscar.setColumns(10);
		edtBuscar.setBounds(79, 32, 269, 20);
		panel.add(edtBuscar);

		JButton button = new JButton("Buscar");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				Clientes cliente = new Clientes();
				try {
					cliente = clienteBusiness.localizarClientePorCPF(edtBuscar
							.getText());

					edtId.setText(String.valueOf(cliente.getId()));
					edtNome.setText(cliente.getNome());
					edtEndereco.setText(cliente.getEndereco());
					edtCEP.setText(cliente.getCep());
					edtBairro.setText(cliente.getBairro());
					edtCidade.setText(cliente.getCidade());
					edtEstado.setText(cliente.getEstado());
					edtFone.setText(cliente.getFone());
					edtFax.setText(cliente.getFax());
					edtEmail.setText(cliente.getEmail());
					edtCPF.setText(cliente.getCpf());
					edtRG.setText(cliente.getRg());

				} catch (BusinessException e3) {

					e3.printStackTrace();
				}

			}
		});
		button.setBounds(358, 31, 89, 23);
		panel.add(button);

		edtId = new JTextField();
		edtId.setBounds(383, 45, 86, 20);
		edtId.setVisible(false);
		add(edtId);
		edtId.setColumns(10);

	}

	public void limparTela() {
		edtId.setText("");
		edtNome.setText("");
		edtEndereco.setText("");
		edtCEP.setText("");
		edtBairro.setText("");
		edtCidade.setText("");
		edtEstado.setText("");
		edtFone.setText("");
		edtFax.setText("");
		edtEmail.setText("");
		edtCPF.setText("");
		edtRG.setText("");
		edtBuscar.setText("");
	}

}
